﻿/**
 * 数据交换
 */
var DataCommunication = new Class({

	moreDataUrl   : 'source/more.php',
	peopleListUrl : 'source/list.php',
	editDataUrl	  : 'source/editdata.php',
	submitDataUrl : 'source/submitdata.php',
	loginUrl      : 'source/login.php',

	/**
	 * 获取联系人列表数据
	 * @param {string} keyWord 索引列表的关键字
	 * @param {function} callback 获取数据成功时的回调函数
	 * @param {element} infoElmt 获取数据失败时显示失败信息的控件
	 */
	getPeopleList : function(pars, callback, infoElmt) {
		var data = {
			'page' : 1
		};
		data = $merge(data, pars);
		for (var n in data) if(data[n] === '') delete data[n];
		new Ajax(this.peopleListUrl, {
			method		: 'get',
			encoding	: 'utf-8',
			onSuccess	: callback,
			onFailure	: function(){if (infoElmt) infoElmt.setHTML('资料下载失败,请稍后再试，若问题继续请与管理员联系…');}
		})
		.setHeader('If-Modified-Since','0')
		.request(data);
	},

	/**
	 * 获取指定联系人详细信息
	 * @param {int} id 指定联系人ID
	 * @param {function} callback 获取数据成功时的回调函数
	 * @param {element} infoElmt 获取数据失败时显示失败信息的控件
	 */
	getMoreData : function(id, callback, infoElmt) {
		var data = {'id' : id};
		new Ajax(this.moreDataUrl, {
			method		: 'get',
			encoding	: 'utf-8',
			onSuccess	: callback,
			onFailure	: function(){if (infoElmt) infoElmt.setHTML('资料下载失败,请稍后再试，若问题继续请与管理员联系…');}
		})
		.setHeader('If-Modified-Since','0')
		.request(data);
	},
	
	/**
	 * 获取编辑指定联系人信息时的表单内容
	 * @param {int} id 指定联系人ID
	 * @param {function} callback 获取数据成功时的回调函数
	 * @param {element} infoElmt 获取数据失败时连是失败信息的控件
	 */
	getEditData : function(id, callback, infoElmt) {
		var data = {'id' : id};
		new Ajax(this.editDataUrl, {
			method		: 'get',
			encoding	: 'utf-8',
			onSuccess	: callback,
			onFailure	: function(){if (infoElmt) infoElmt.setHTML('资料下载失败,请稍后再试，若问题继续请与管理员联系…');}
		})
		.setHeader('If-Modified-Since','0')
		.request(data);
	},

	/**
	 * 提交数据信息
	 * @param {Object} dataPack 要提交的数据包
	 * @param {function} callback 提交数据成功时的回调函数
	 * @param {function} failureCallback 提交数据失败时的回调函数
	 */
	submitData : function(dataPack, callback, failureCallback) {
		var data = {'data': Json.toString(dataPack)};
		new Ajax(this.submitDataUrl, {
			method		: 'post',
			encoding	: 'utf-8',
			onSuccess	: callback,
			onFailure	: failureCallback
		})
		.setHeader('If-Modified-Since','0')
		.request(data);
	},

	/**
	 * 用户登录
	 * @param {Object} dataPack 用户信息数据包
	 * @param {function} callback 提交数据成功时的回调函数
	 * @param {function} failureCallback 提交数据失败时的回调函数
	 */
	login : function(data, callback, failureCallback) {
		new Ajax(this.loginUrl, {
			method		: 'post',
			encoding	: 'utf-8',
			onSuccess	: callback,
			onFailure	: failureCallback
		})
		.setHeader('If-Modified-Since','0')
		.request(data);
	},

	/**
	 * 用户注销
	 * @param {function} callback 提交数据成功时的回调函数
	 * @param {function} failureCallback 提交数据失败时的回调函数
	 */
	logout : function(callback, failureCallback) {
		var data = {'logout': 'true'};
		new Ajax(this.loginUrl, {
			method		: 'post',
			encoding	: 'utf-8',
			onSuccess	: callback,
			onFailure	: failureCallback
		})
		.setHeader('If-Modified-Since','0')
		.request(data);
	}
	
});